package cc.rengu.igas.bsps.facade;

import cc.rengu.igas.bsps.facade.request.*;
import cc.rengu.igas.bsps.facade.response.*;
import cc.rengu.igas.bsps.facade.result.Result;

/**
 * 商户用户服务功能
 */
public interface MchntUserService {

    /**
     * 获取用户授权码
     *
     * @param getUserAuthCodeRequest 请求报文
     * @return 响应报文
     */
    Result<GetUserAuthCodeResponse> getUserAuthCode(GetUserAuthCodeRequest getUserAuthCodeRequest);

    /**
     * 获取用户授权信息
     *
     * @param getUserAuthInfoRequest 请求报文
     * @return 响应报文
     */
    Result<GetUserAuthInfoResponse> getUserAuthInfo(GetUserAuthInfoRequest getUserAuthInfoRequest);

    /**
     * 手机号获取用户列表
     *
     * @param getUserInfoListRequest 请求报文
     * @return 响应报文
     */
    Result<GetUserInfoListResponse> getUserInfoList(GetUserInfoListRequest getUserInfoListRequest);

    /**
     * 用户登录登出
     *
     * @param userLogInOutRequest 请求报文
     * @return 响应报文
     */
    Result<UserLogInOutResponse> userLogInOut(UserLogInOutRequest userLogInOutRequest);

    /**
     * 注册用户名校验
     *
     * @param registerUserNameCheckRequest 请求报文
     * @return 响应报文
     */
    Result<RegisterUserNameCheckResponse> registerUserNameCheck(RegisterUserNameCheckRequest registerUserNameCheckRequest);

    /**
     * 用户密码重置
     *
     * @param userPasswordResetRequest 请求报文
     * @return 响应报文
     */
    Result<UserPasswordResetResponse> userPasswordReset(UserPasswordResetRequest userPasswordResetRequest);

    /**
     * 新增收银员操作
     *
     * @param cashierAddRequest 请求报文
     * @return 响应报文
     */
    Result<CashierAddResponse> cashierAdd(CashierAddRequest cashierAddRequest);

    /**
     * 修改收银员操作
     *
     * @param cashierModifyRequest 请求报文
     * @return 响应报文
     */
    Result<CashierModifyResponse> cashierModify(CashierModifyRequest cashierModifyRequest);

    /**
     * 收银员解绑操作
     *
     * @param cashierUnBindRequest 请求报文
     * @return 响应报文
     */
    Result<CashierUnBindResponse> cashierUnBind(CashierUnBindRequest cashierUnBindRequest);

    /**
     * 收银员消息设置操作
     *
     * @param cashierMsgSettingRequest 请求报文
     * @return 响应报文
     */
    Result<CashierMsgSettingResponse> cashierMsgSetting(CashierMsgSettingRequest cashierMsgSettingRequest);

    /**
     * 手机银行认证登录
     *
     * @param mobileBankAuthLoginRequest 请求报文
     * @return 响应报文
     */
    Result<MobileBankAuthLoginResponse> mobileBankAuthLogin(MobileBankAuthLoginRequest mobileBankAuthLoginRequest);

    /**
     * 手机银行微信授权绑定商户
     *
     * @param mobileBankWechatAuthBindMchntRequest 请求报文
     * @return 响应报文
     */
    Result<MobileBankWechatAuthBindMchntResponse> mobileBankWechatAuthBindMchnt(MobileBankWechatAuthBindMchntRequest mobileBankWechatAuthBindMchntRequest);

    /**
     * 手机银行商户号绑定
     *
     * @param mobileBankMchntNoBindMchntRequest 请求报文
     * @return 响应报文
     */
    Result<MobileBankMchntNoBindMchntResponse> mobileBankMchntNoBindMchnt(MobileBankMchntNoBindMchntRequest mobileBankMchntNoBindMchntRequest);

    /**
     * 生成登录订单
     *
     * @param generateLoginOrderRequest 请求报文
     * @return 响应报文
     */
    Result<GenerateLoginOrderResponse> generateLoginOrder(GenerateLoginOrderRequest generateLoginOrderRequest);

    /**
     * 登录订单状态查询
     *
     * @param loginOrderStatusQueryRequest 请求报文
     * @return 响应报文
     */
    Result<LoginOrderStatusQueryResponse> loginOrderStatusQuery(LoginOrderStatusQueryRequest loginOrderStatusQueryRequest);

    /**
     * 微信扫码更新订单状态
     *
     * @param wechatScanCodeLoginRequest 请求报文
     * @return 响应报文
     */
    Result<WechatScanCodeLoginResponse> wechatScanCodeLogin(WechatScanCodeLoginRequest wechatScanCodeLoginRequest);

}
